The present invention relates generally to systems and methods for printing data from a computer application running on a host computer.
In many computer systems, it is common to represent and convey information to a user through digital images. These images may take a variety of forms such as alphanumeric characters and graphs and other pictorial representations. The digital images are conveyed to users on graphical rendering devices, such as video monitors, printers and the like. Typically, the digital images are stored in digital form, manipulated and then displayed on a monitor or printed on an output device such as a printer.
To provide flexibility and high quality output, printers capable of accepting page description languages were developed whereby a page with graphics, text, and images may be represented using successive commands of the page description language (PDL). In these printers, after receiving the page description language commands, a desired image is rasterized so that a print engine in the printer can generate the page by turning on or off individual dots or pixels across the printed page in a raster scan line.
One popular page description language is the PostScript(copyright) page description language available from Adobe Systems Incorporated of San Jose, Calif. The PostScript page description language is described in PostScript Language Reference Manual, Addison-Wesley (2d. ed. 1993).
Historically, printers that support the PostScript page description language have built-in computers which receive the PostScript page description language commands and interpret then rasterize the commands to raster form suitable for delivery to a marking engine for printing. The built-in computer generates a pixel pattern or bit-map image that includes raster-formatted data indicating intensities or colors for a two-dimensional matrix of pixels or dots.
Due to the increasing capability of processors used in host computers and the drive to lower overall system cost, the rasterization process can be shifted to a host computer (i.e., in this context, the computer on which the printing application is running). The host computer can include a raster image processor (generally implemented as a computer program) that converts the PDL data to raster data. The output of the host raster image processor is generally encoded with print control commands and data for a specific output device.
Generally, if the host computer executes a Microsoft Windows(copyright) operating system, the raster image processor (RIP) transfers data (print control commands and image data) to a spooler program. The spooler is essentially a data buffer that stores the commands and data in memory until they can be processed more extensively and sent to a printer. Spooling frees the underlying application program from having to wait for a printer to accept commands and data. Control commands and data are sent from the spooler to an output device over an I/O channel, which can be a serial or parallel printer interface or a network connection.
A system adapts a raster image processor to support a selected output device from a plurality of output devices including buffering, in a shared memory controlled by a status indicator, a print stream having one or more commands for customizing the raster image processor and customizing the raster image processor using the commands to render a document on the selected output device.
Implementations of the invention may include one or more of the following. The print stream may be generated by an output device driver or by an application. The customizing step may include retrieving output device characteristics from an output device description file. Color conversion characteristics or engine driver information may be retrieved from the output device description file. Further, the invention may generate a page parameter memory structure for the selected output device; and customize a rendering engine using the page parameter memory structure. The customized rendering engine may generate raster output. A color profile specified in the output device description file or an engine driver specified in the output device description file may be loaded into the page parameter memory structure. The engine driver in turn generates an output for the selected output device. The output may be one or more escape sequences specific to the selected output device. Each escape sequence is a series of characters used to send special instructions to printers and other devices. The sequence includes an escape character which is combined with other characters.
The output of the engine driver may be sent to the selected output device using an operating system service call. The invention also selects the closest matching selected output device color in the output device in place of a color renderable by a final output device. The color selection may use one or more color profiles, which may be chained together. The profiles may be ICC profiles. The color selection operation may include converting the color space of the document into a device independent format; and converting the device independent format to the color space of the selected output device. The converting the device independent format to the color space of the selected output device step may use a profile associated with the selected output device. The print stream may be generated by generating one or more commands to customize the raster image processor to support a selected output device from the plurality of output devices; and inserting the one or more commands into the print stream.
Advantages of the invention include one or more of the following. The invention supports a plurality of output devices without requiring one raster image processor for each output device. Rather, a generic raster image processor is used which is dynamically configured by injecting special commands into a print stream to specify output device specific parameters to be loaded on the generic raster image processor. The dynamic customization of the generic raster image processor allows for the storage of a single copy of the generic raster image processor, thus reducing storage requirements associated with the multiplicity of raster image processors required to handle a plurality of output devices. Moreover, the invention allows the generic raster image processor to communicate at a high performance rate using memory-to-memory transfers.
By employing resources available in the host computer to prepare print data for printing by a print engine, the cost of the entire system is reduced. Further, the invention ensures that output-ready data is available to the print engine as needed for efficient full page printing.
The invention requires no change in the users"" current workflow. Users can simply select press emulation settings and work and print as usual. Moreover, the workflow is extensible for the user who may choose to implement a color managed workflow and therein enjoy the benefits therefrom including softproofing, repurposability and consistency.
Other features and advantages of the invention will be apparent from the following description, including the drawings, and from the claims.